// pages/mistakes/index.js
const examApi = require('../../utils/examApi.js');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    activeTab: 0,  // 当前选中的分类 (0: 全部, 1: 常识判断, 2: 言语理解, 3: 数量关系, 4: 判断推理, 5: 资料分析, 6: 公共基础知识)
    mistakes: [],  // 错题列表
    allMistakes: [], // 所有错题（用于筛选）
    loading: true,   // 加载状态
    // 模拟错题列表
    mistakeList: [
      {
        id: 1,
        question: '下列哪项不属于我国的基本国策？',
        options: ['计划生育', '男女平等', '保护环境', '科教兴国'],
        answer: 'A',
        userAnswer: 'B',
        analysis: '计划生育已不再是我国的基本国策。',
        createTime: '2024-01-10'
      },
      {
        id: 2,
        question: '我国现行宪法是在哪一年颁布实施的？',
        options: ['1978年', '1982年', '1954年', '1975年'],
        answer: 'B',
        userAnswer: 'A',
        analysis: '我国现行宪法是1982年12月4日第五届全国人民代表大会第五次会议通过的。',
        createTime: '2024-01-12'
      }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadMistakesData();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.loadMistakesData();
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 加载错题数据（使用模拟数据）
   */
  loadMistakesData() {
    this.setData({ loading: true });
    wx.showLoading({
      title: '加载中',
      mask: true
    });

    examApi.getMistakes()
      .then(response => {
        console.log('获取到的错题列表:', response);
        this.setData({
          allMistakes: response,
          mistakes: response,
          loading: false
        });
      })
      .catch(error => {
        console.error('获取错题列表失败:', error);
        wx.showToast({
          title: '获取错题列表失败',
          icon: 'none'
        });
        this.setData({ loading: false });
      })
      .finally(() => {
        wx.hideLoading();
      });
  },
  
  /**
   * 分类标签切换
   */
  onTabChange(e) {
    const activeTab = e.detail.index;
    this.setData({ activeTab });
    this.filterMistakes();
  },
  
  /**
   * 根据筛选条件过滤错题
   */
  filterMistakes() {
    const { activeTab, allMistakes } = this.data;
    let filteredMistakes = [];
    
    // 分类筛选
    switch (activeTab) {
      case 0: // 全部
        filteredMistakes = allMistakes;
        break;
      case 1: // 常识判断
        filteredMistakes = allMistakes.filter(item => item.type === '常识判断');
        break;
      case 2: // 言语理解
        filteredMistakes = allMistakes.filter(item => item.type === '言语理解');
        break;
      case 3: // 数量关系
        filteredMistakes = allMistakes.filter(item => item.type === '数量关系');
        break;
      case 4: // 判断推理
        filteredMistakes = allMistakes.filter(item => item.type === '判断推理');
        break;
    }
    
    this.setData({ mistakes: filteredMistakes });
  },
  
  /**
   * 查看错题详情
   */
  viewMistakeDetail(e) {
    console.log('点击了错题项：', e);
    const id = e.currentTarget.dataset.id;
    console.log('错题ID：', id);
    
    // 测试一下是否能获取到正确的错题数据
    const mistake = this.data.mistakes.find(item => item.id === id);
    console.log('找到的错题数据：', mistake);
    
    // 直接跳转到错题详情页，传递错题ID
    wx.navigateTo({
      url: `/pages/mistake-detail/index?id=${id}`,
      success: function() {
        console.log('跳转成功');
      },
      fail: function(error) {
        console.error('跳转失败：', error);
      }
    });
  },
  
  /**
   * 开始练习
   */
  startPractice() {
    console.log('点击了开始练习按钮');
    const { mistakes } = this.data;
    console.log('当前错题列表：', mistakes);
    
    if (mistakes.length === 0) {
      console.log('没有错题可练习');
      wx.showToast({
        title: '暂无错题可练习',
        icon: 'none'
      });
      return;
    }
    
    // 将当前筛选后的错题缓存到本地
    wx.setStorageSync('practice_mistakes', mistakes);
    console.log('已将错题保存到本地缓存：', mistakes.length, '道题');
    
    // 跳转到练习页面
    wx.navigateTo({
      url: '/pages/practice/index',
      success: function() {
        console.log('跳转到练习页面成功');
      },
      fail: function(error) {
        console.error('跳转到练习页面失败：', error);
      }
    });
  },
  
  /**
   * 清空错题
   */
  clearMistakes() {
    wx.showModal({
      title: '确认清空',
      content: '确定要清空所有错题记录吗？此操作不可恢复。',
      success: (res) => {
        if (res.confirm) {
          wx.showLoading({
            title: '清空中...',
            mask: true
          });

          examApi.clearMistakes()
            .then(() => {
              wx.showToast({
                title: '清空成功',
                icon: 'success'
              });
              this.setData({
                allMistakes: [],
                mistakes: []
              });
            })
            .catch(error => {
              console.error('清空错题失败:', error);
              wx.showToast({
                title: '清空失败',
                icon: 'none'
              });
            })
            .finally(() => {
              wx.hideLoading();
            });
        }
      }
    });
  },

  // 模拟删除错题
  deleteMistake(e) {
    const id = e.currentTarget.dataset.id;
    wx.showModal({
      title: '确认删除',
      content: '确定要删除这道错题吗？',
      success: (res) => {
        if (res.confirm) {
          wx.showLoading({
            title: '删除中...',
            mask: true
          });

          examApi.deleteMistake(id)
            .then(() => {
              wx.showToast({
                title: '删除成功',
                icon: 'success'
              });
              // 更新列表
              const { allMistakes } = this.data;
              const newAllMistakes = allMistakes.filter(item => item.id !== id);
              this.setData({
                allMistakes: newAllMistakes
              }, () => {
                this.filterMistakes(); // 重新过滤显示的错题
              });
            })
            .catch(error => {
              console.error('删除错题失败:', error);
              wx.showToast({
                title: '删除失败',
                icon: 'none'
              });
            })
            .finally(() => {
              wx.hideLoading();
            });
        }
      }
    });
  }
})